/*
 * @FilePath: user_inc.h
 * @Author: wyx
 * @Date: 2023-08-12 16:29:58
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2023-09-30 20:57:39
 * Copyright: 2023 xxxTech CO.,LTD. All Rights Reserved.
 * @Descripttion: 
 */
#ifndef __USER_INC_H_
#define __USER_INC_H_


#include <ctype.h> //C语言字符分类函数,用于测试字符是否属于特定的字符类别
#include <fcntl.h> //对文件的打开、数据写入、数据读取、关闭文件的操作
#include <math.h>
#include <pthread.h> //线程文件
#include <stdarg.h>  //接受可变参数.h文件
#include <stdint.h>  //C99定义整数类型.h文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h> //C中TCP/IP协议通信中间抽象层
#include <chrono>       //count time
#include <fstream>      //C++文件读写.h文件
#include <iostream>
#include <memory> //make_shared    shared_ptr
#include <thread>
/*Ubuntu.h*/
#include <net/if.h>    //配置IP地址,激活接口
#include <unistd.h>    //对 POSIX 操作系统 API 的访问功能的头文件
#include <errno.h>     //Ubuntu系统报错保存
#include <sys/time.h>  //linux环境实现定时器.h文件
#include <sys/sem.h>   //信号量.h文件      POSIX定义的XSI扩展头文件
#include <sys/ioctl.h> //Ubuntu系统调用摄像头参数文件
#include <semaphore.h> //信号量.h文件    POSIX定义的可选头文件
#include <linux/can.h> //can.h文件
#include <termios.h>   //Ubuntu串口编程.h文件

/*user.h*/
// #include <osqp/osqp.h>
#include <vector>
// #include "OsqpEigen/OsqpEigen.h" //osqp_eigen
#include <eigen3/Eigen/Eigen>
#include <iostream>
#include <fstream>
// #include <minimum_snap/run_minimum_snap.hpp>

extern int hit_flag;


double Factorial(int Op);
/**
 * @brief:计算Op的阶乘
 * @param {int} Op
 * @autor: 37
 * @return Op!
 */
double Factorial(int Op)  // calculate factorial
{
    int fac = Op;
    if (fac > 1)
        fac = fac * Factorial(Op - 1);
    if (fac <= 0)
        fac = 1;
    return static_cast<double>(fac);
}

// typedef typename Eigen::MatrixXd MatrixXd;
// typedef typename Eigen::VectorXd VectorXd;
// typedef typename Eigen::Vector2d Vector2d;


#endif